﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Util;
using System.Web.UI.WebControls;

namespace BLL
{
    public class Tracks
    {
        public bool SendTrack(TrackInfo tr, FileUpload ftr, out string resMess)
        {
            if (chekInputFields(tr, ftr, out resMess))
            {
                new DAL.Tracks().SendTrack(tr);
                return true;
            }
            else
            {
                return false;
            }
            
        }

        public List<TrackInfo> GetTracks()
        {
            return new DAL.Tracks().GetTracks();
        }

        public List<TrackInfo> GetTracksOfAuthor(string author)
        {
            return new DAL.Tracks().GetTracksOfAuthor(author);
        }

        public TrackInfo getTrack(String trackId)
        {
            return new DAL.Tracks().Track(trackId);
        }

        private bool chekInputFields(TrackInfo tr, FileUpload ftr, out string resMess)
        {
            double IsParsedTrackePriceVarTest = 0;
            if (!Double.TryParse(tr.Price, out IsParsedTrackePriceVarTest))
            {
                resMess = "Введите нормальную цену! (просто число, безо всякого там...)";
                return false;
            }

            if (tr.Name.Length > 45 || tr.Name.Length == 0)
            {
                resMess = "Проблемы в названии трэка (разберитесь..)";
                return false;
            }

            if (ftr.PostedFile.ContentLength > 20000000)
            {
                resMess = "Размер файла выбранного трека слишком велик (то есть превышает 15Мб!)";
                return false;
            }
            resMess = "Успешно!";
            return true;
        }

        public bool deleteTrack(string trackId)
        {
            return new DAL.Tracks().deleteTrack(trackId);
        }

        public bool changeVisebleMode(string trackId)
        {
            return new DAL.Tracks().changeVisebleMode(trackId);
        }

        public bool updateTrack(TrackInfo track)
        {
            return new DAL.Tracks().updateTrack(track);
        }
    }
}